-2003-11-17 Noah Levitt <nlevitt@columbia.edu>
+Mon Nov 17 22:56:09 2003 Kristian Rietveld <kris@gtk.org>
- * configure.in: Check for freetype headers the way freetype
- wants us to.
+ * gtk/gtkentryprivate.h: add _gtk_entry_completion_resize_popup.
+
+ * gtk/gtkentry.c (gtk_entry_completion_timeout): popup when not
+ mapped, else resize_popup.
+
+ * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup),
+ (_gtk_entry_completion_popup): moved all popup resizing code to
+ _gtk_entry_completion_resize_popup, and show the window when there
+ are more than zero items in the completion list again (sigh).
2003-11-17 Mark McLoughlin <mark@skynet.ie>
-2003-11-17 Noah Levitt <nlevitt@columbia.edu>
+Mon Nov 17 22:56:09 2003 Kristian Rietveld <kris@gtk.org>
- * configure.in: Check for freetype headers the way freetype
- wants us to.
+ * gtk/gtkentryprivate.h: add _gtk_entry_completion_resize_popup.
+
+ * gtk/gtkentry.c (gtk_entry_completion_timeout): popup when not
+ mapped, else resize_popup.
+
+ * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup),
+ (_gtk_entry_completion_popup): moved all popup resizing code to
+ _gtk_entry_completion_resize_popup, and show the window when there
+ are more than zero items in the completion list again (sigh).
2003-11-17 Mark McLoughlin <mark@skynet.ie>
-2003-11-17 Noah Levitt <nlevitt@columbia.edu>
+Mon Nov 17 22:56:09 2003 Kristian Rietveld <kris@gtk.org>
- * configure.in: Check for freetype headers the way freetype
- wants us to.
+ * gtk/gtkentryprivate.h: add _gtk_entry_completion_resize_popup.
+
+ * gtk/gtkentry.c (gtk_entry_completion_timeout): popup when not
+ mapped, else resize_popup.
+
+ * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup),
+ (_gtk_entry_completion_popup): moved all popup resizing code to
+ _gtk_entry_completion_resize_popup, and show the window when there
+ are more than zero items in the completion list again (sigh).
2003-11-17 Mark McLoughlin <mark@skynet.ie>
-2003-11-17 Noah Levitt <nlevitt@columbia.edu>
+Mon Nov 17 22:56:09 2003 Kristian Rietveld <kris@gtk.org>
- * configure.in: Check for freetype headers the way freetype
- wants us to.
+ * gtk/gtkentryprivate.h: add _gtk_entry_completion_resize_popup.
+
+ * gtk/gtkentry.c (gtk_entry_completion_timeout): popup when not
+ mapped, else resize_popup.
+
+ * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup),
+ (_gtk_entry_completion_popup): moved all popup resizing code to
+ _gtk_entry_completion_resize_popup, and show the window when there
+ are more than zero items in the completion list again (sigh).
2003-11-17 Mark McLoughlin <mark@skynet.ie>
-2003-11-17 Noah Levitt <nlevitt@columbia.edu>
+Mon Nov 17 22:56:09 2003 Kristian Rietveld <kris@gtk.org>
- * configure.in: Check for freetype headers the way freetype
- wants us to.
+ * gtk/gtkentryprivate.h: add _gtk_entry_completion_resize_popup.
+
+ * gtk/gtkentry.c (gtk_entry_completion_timeout): popup when not
+ mapped, else resize_popup.
+
+ * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup),
+ (_gtk_entry_completion_popup): moved all popup resizing code to
+ _gtk_entry_completion_resize_popup, and show the window when there
+ are more than zero items in the completion list again (sigh).
2003-11-17 Mark McLoughlin <mark@skynet.ie>
actions = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (completion->priv->actions), NULL);
if (matches > 0 || actions > 0)
- _gtk_entry_completion_popup (completion);
+ {
+ if (! GTK_WIDGET_MAPPED (completion->priv->popup_window))
+ _gtk_entry_completion_popup (completion);
+ else
+ _gtk_entry_completion_resize_popup (completion);
+ }
}
GDK_THREADS_LEAVE ();
}
}
-/* this function is a bit nasty */
-void
-_gtk_entry_completion_popup (GtkEntryCompletion *completion)
+/* some nasty size requisition */
+gint
+_gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
{
- gint x, y, x_border, y_border;
- gint items;
- gint height;
-
- if (GTK_WIDGET_MAPPED (completion->priv->popup_window))
- return;
-
- gtk_widget_show_all (completion->priv->vbox);
+ gint items, height, x_border, y_border;
- gdk_window_get_origin (completion->priv->entry->window, &x, &y);
get_borders (GTK_ENTRY (completion->priv->entry), &x_border, &y_border);
items = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (completion->priv->filter_model), NULL);
gtk_tree_view_column_cell_get_size (completion->priv->column, NULL,
NULL, NULL, NULL, &height);
+ if (items <= 0)
+ gtk_widget_hide (completion->priv->scrolled_window);
+ else
+ gtk_widget_show (completion->priv->scrolled_window);
+
gtk_widget_set_size_request (completion->priv->tree_view,
completion->priv->entry->allocation.width - 2 * x_border,
items * height);
- if (items <= 0)
- gtk_widget_hide (completion->priv->scrolled_window);
-
/* default on no match */
completion->priv->current_selected = -1;
items * height);
}
+ return height;
+}
+
+void
+_gtk_entry_completion_popup (GtkEntryCompletion *completion)
+{
+ gint x, y, x_border, y_border;
+ gint height;
+
+ if (GTK_WIDGET_MAPPED (completion->priv->popup_window))
+ return;
+
+ gtk_widget_show_all (completion->priv->vbox);
+
+ gdk_window_get_origin (completion->priv->entry->window, &x, &y);
+ get_borders (GTK_ENTRY (completion->priv->entry), &x_border, &y_border);
+
x += x_border;
y += 2 * y_border;
+ height = _gtk_entry_completion_resize_popup (completion);
+
gtk_window_move (GTK_WINDOW (completion->priv->popup_window), x, y + height);
gtk_widget_show (completion->priv->popup_window);
gulong key_press_id;
};
+gint _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion);
void _gtk_entry_completion_popup (GtkEntryCompletion *completion);
void _gtk_entry_completion_popdown (GtkEntryCompletion *completion);